<?php
/**
 *  User：LRZ
 *  Date：2020/1/29
 *  Time：16:06
 */

/**
 *  1313.解压缩编码列表
 *
 *  标签：数组
 *
 *  给你一个以行程长度编码压缩的整数列表 nums 。
 *  考虑每对相邻的两个元素 [a, b] = [nums[2*i], nums[2*i+1]] （其中 i >= 0 ），每一对都表示解压后有 a 个值为 b 的元素。
 *  请你返回解压后的列表。
 *
 *  示例：
 *      输入：nums = [1,2,3,4]
 *      输出：[2,4,4,4]
 *      解释：第一对 [1,2] 代表着 2 的出现频次为 1，所以生成数组 [2]。
 *           第二对 [3,4] 代表着 4 的出现频次为 3，所以生成数组 [4,4,4]。
 *           最后将它们串联到一起 [2] + [4,4,4,4] = [2,4,4,4]。Tips：这里给的提示应该是[2] + [4,4,4] = [2,4,4,4]
 *   
 *  提示：
 *      2 <= nums.length <= 100
 *      nums.length % 2 == 0
 *      1 <= nums[i] <= 100
 *
 *  来源：力扣（LeetCode）
 *  链接：https://leetcode-cn.com/problems/decompress-run-length-encoded-list
 *  著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

$start = microtime(true);

$nums = [1, 2, 3, 4, 5, 6];
$res  = decompressRLElist($nums);

$end = microtime(true);
print_r($res);
printf(' total run: %.2f s<br>' . 'memory usage: %.2f M<br> ', $end - $start, memory_get_usage() / 1024 / 1024);

function decompressRLElist($nums)
{
    $res  = [];
    $size = count($nums);
    if ($size % 2 !== 0) {
        return [];
    }

    for ($i = 0; $i < $size / 2; $i++) {
        $a = $nums[$i * 2];
        $b = $nums[$i * 2 + 1];
        for ($j = 0; $j < $a; $j++) {
            $res[] = $b;
        }
    }

    return $res;
}